;layui.define(function (e) {
    layui.use(['index', 'jquery', 'http', 'form', 'table', 'common', 'layer'], function () {

        var $ = layui.jquery
            , http = layui.http
            , table = layui.table
            , form = layui.form
            , common = layui.common
            , layer = parent.layer === undefined ? layui.layer : top.layer;

        var urls = {
            queryPageData: "/core/user/queryPageData",
            modifyDataDialog: "/core/user/modifyDataDialog",
            modifyStatusData: "/core/user/modifyStatusData",
            resetUserPwd: "/core/user/resetPwd",
            modifyUserRoleDataDialog: "/core/user/role/modifyUserRoleDataDialog",
            deleteData: "/core/user/deleteData"
        };

        var tableIns, index, url;
        queryPageData();

        /**
         * 查询页面数据
         */
        function queryPageData () {
            //第一个实例
            tableIns = http.table({
                elem: '#dataList'
                , height: 'full-100'
                , skin: 'rows'
                , page: {curr: 1}//重新从第 1 页开始
                , url: urls.queryPageData //数据接口
                , where: {
                    "keyword": $("#keyword").val()
                    , field: 'updateTime' //排序字段
                    , order: 'desc' //排序方式
                }
                , cols: [[ //表头
                    {field: 'loginName', title: '登录账号', minWidth: 120, width: 100}
                    , {field: 'realName', title: '用户名称', minWidth: 120}
                    , {field: 'departmentName', title: '所属科室', minWidth: 80}
                    , {
                        field: 'status', title: '状态', minWidth: 120, templet: function (d) {
                            var s = '';
                            if (d.status == 1) {
                                s += '<input type="checkbox" name="disabled" lay-skin="switch" data-id="' + d.id + '" lay-filter="updateStatus" lay-text="正常|禁用" checked>';
                            } else {
                                s += '<input type="checkbox" name="disabled" lay-skin="switch" data-id="' + d.id + '" lay-filter="updateStatus" lay-text="正常|禁用" >';
                            }
                            return s;
                        }
                    }
                    , {field: 'creator', title: '创建人', minWidth: 120, width: 80}
                    , {field: 'createTime', title: '创建时间', sort: true, minWidth: 180}
                    , {field: 'updateBy', title: '更新人', minWidth: 120, width: 80}
                    , {field: 'updateTime', title: '更新时间', sort: true, minWidth: 180}
                    , {title: '操作', fixed: 'right', align: "center", minWidth: 160, templet: '#opTpl'}
                ]]
                , initSort: {
                    field: 'updateTime' //排序字段，对应 cols 设定的各字段名
                    , type: 'desc' //排序方式  asc: 升序、desc: 降序、null: 默认排序
                }
            });
        }

        /**
         * 修改状态事件
         */
        form.on('switch(updateStatus)', function (data) {
            var text = data.status ? '启用' : '禁用';
            var disabled = this.checked ? 1 : 0;
            http.post({
                loading: true,
                loadingText: '数据提交中,请稍候...',
                url: urls.modifyStatusData,
                data: {id: $(this).data('id'), status: disabled},
                success: function () {
                    common.showSuccessTips('用户' + text + '成功');
                }
            });
        });
        /**
         * 操作按钮事件
         */
        table.on('tool(dataList)', function (obj) {
            var layEvent = obj.event,
                data = obj.data;
            var id = data.id;
            if (layEvent == 'del') {
                layer.confirm('删除该用户将会删除用户相关的数据,确定删除吗？', {icon: 3, title: '提示信息'}, function () {
                    http.post({
                        loading: true,
                        loadingText: '数据提交中,请稍候...',
                        url: urls.deleteData + "/" + id,
                        data: {id: data.id},
                        success: function () {
                            common.showSuccessTips('数据删除成功', function () {
                                fn.refresh();
                            });
                        }
                    });
                });
            }
            if (layEvent == 'edit') {
                url = urls.modifyDataDialog + '?id=' + id;
                openEditDialog('修改用户', url);
            }
            if (layEvent == 'setRole') {
                url = urls.modifyUserRoleDataDialog + "?id=" + id;
                openEditDialog('设置用户角色', url);
            }
            if (layEvent == 'resetPwd') {
                index = layui.layer.open({
                    type: 1,
                    title: '重置密码',
                    shade: false,
                    maxmin: true,
                    area: ['400px', '180px'],
                    content: $('#resetPwdTpl'),
                    btn: ['保存', '关闭'],
                    btnAlign: 'c',
                    yes: function (index, layero) {
                        var pwd = $('[name=password]').val();
                        if (!pwd) {
                            common.showErrorTips("请输入重置的密码!");
                            $('[name=password]').focus();
                            return;
                        }
                        http.post({
                            url: urls.resetUserPwd,
                            data: {id: id, password: pwd},
                            success: function (res) {
                                common.showSuccessTips('密码重置成功!', function () {
                                    layui.layer.close(index);
                                });
                            }
                        });
                    },
                    btn2: function (index) {
                        layui.layer.close(index);
                    }
                });
            }
        });
        /**
         * 排序事件
         */
        table.on('sort(dataList)', function (obj) { //注：tool是工具条事件名，test是table原始容器的属性 lay-filter="对应的值"
            tableIns.reload({
                initSort: obj //记录初始排序，如果不设的话，将无法标记表头的排序状态。 layui 2.1.1 新增参数
                , where: { //请求参数（注意：这里面的参数可任意定义，并非下面固定的格式）
                    field: obj.field //排序字段
                    , order: obj.type //排序方式
                }
            });
        });
        /**
         * 表格刷新
         */
        fn.refresh = function () {
            if (index)
                layui.layer.close(index);
            tableIns.reload({
                    where: {"keyword": $("#keyword").val()}
                    , page: {
                        curr: 1 //重新从第 1 页开始
                    }
                    , initSort: {
                        field: 'updateTime' //排序字段，对应 cols 设定的各字段名
                        , type: 'desc' //排序方式  asc: 升序、desc: 降序、null: 默认排序
                    }
                }
            );
        };
        /**
         * 查询用户按钮事件
         */
        $("#btnQuery").on("click", function () {
            fn.refresh();
        });
        /**
         * 添加用户按钮事件
         */
        $("#btnAddPage").click(function () {
            url = urls.modifyDataDialog;
            openEditDialog('添加用户', url);
        });
        /**
         * 编辑数据对话框
         * @param title 对话框标题
         * @param url 对话框内容数据url
         */
        var openEditDialog = function (title, url) {
            index = layui.layer.open({
                type: 2,
                title: title,
                shade : [0.8, '#C8E6C9'],
                maxmin: true,
                area: ['400px', '450px'],
                content: url,
                btn: ['保存', '关闭'],
                btnAlign: 'c',
                yes: function (index, layero) {
                    layero.find('iframe').contents().find("#formAdd").find("#btnAdd").click();
                },
                btn2: function (index) {
                    layui.layer.close(index);
                }
            });
        };
    });

    e("core/user", {});
});
